home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 23 / Amiga Format AFCD23 (Feb 1998, Issue 107).iso / -seriously_amiga- / shareware / programming / other / medlibpashs / units / medplayer.pas
Pascal/Delphi Source File  |  1997-12-01  |  2KB  |  141 lines

  1. unit MedPlayer;
  2. { version 1.1 -- many bugs fixed                        }
  3. { written by Daniel Mealha Cabrita (dancab@base.com.br)    }
  4. { original: 16 october, 1997                            }
  5. { v1.1: 22 october, 1997                                }
  6.  
  7. INTERFACE
  8. uses Exec;
  9.  
  10. var
  11.     MedPlayerBase : pLibrary;
  12.  
  13.  
  14. function GetPlayer (midi: longint): longint;
  15. procedure FreePlayer;
  16. procedure PlayModule (module: pointer);
  17. procedure ContModule (module: pointer);
  18. procedure StopPlayer;
  19. procedure SetTempo (tempo: longint);
  20. function LoadModule (medName: string): pointer;
  21. procedure UnLoadModule (module: pointer);
  22. function GetCurrentModule: pointer;
  23. procedure ResetMIDI;
  24. procedure SetModnum (modnum: longint);
  25. procedure RelocModule (module: pointer);
  26.  
  27.  
  28. IMPLEMENTATION
  29.  
  30. function GetPlayer; xassembler;
  31. asm
  32.     move.l    a6,-(sp)
  33.     move.l    8(sp),d0
  34.     move.l    MedPlayerBase,a6
  35.     jsr        -$1e(a6)
  36.     move.l    d0,$C(sp)
  37.     move.l    (sp)+,a6
  38. end;
  39.  
  40. procedure FreePlayer; xassembler;
  41. asm
  42.     move.l    a6,-(sp)
  43.     move.l    MedPlayerBase,a6
  44.     jsr        -$24(a6)
  45.     move.l    (sp)+,a6
  46. end;
  47.  
  48. procedure PlayModule; xassembler;
  49. asm
  50.     move.l    a6,-(sp)
  51.     move.l    8(sp),a0
  52.     move.l    MedPlayerBase,a6
  53.     jsr        -$2a(a6)
  54.     move.l    (sp)+,a6
  55. end;
  56.  
  57. procedure ContModule; xassembler;
  58. asm
  59.     move.l    a6,-(sp)
  60.     move.l    8(sp),a0
  61.     move.l    MedPlayerBase,a6
  62.     jsr        -$30(a6)
  63.     move.l    (sp)+,a6
  64. end;
  65.  
  66. procedure StopPlayer; xassembler;
  67. asm
  68.     move.l    a6,-(sp)
  69.     move.l    MedPlayerBase,a6
  70.     jsr        -$36(a6)
  71.     move.l    (sp)+,a6
  72. end;
  73.  
  74. procedure SetTempo; xassembler;
  75. asm
  76.     move.l    a6,-(sp)
  77.     move.l    8(sp),d0
  78.     move.l    MedPlayerBase,a6
  79.     jsr        -$42(a6)
  80.     move.l    (sp)+,a6
  81. end;
  82.  
  83. function LoadModule; assembler;
  84. var c_medName: string;
  85. asm
  86.     move.l    medName,-(sp)
  87.     pea        c_medName
  88.     jsr        PasToC
  89.     move.l    a6,-(sp)
  90.     lea        c_medName,a0
  91.     move.l    MedPlayerBase,a6
  92.     jsr        -$48(a6)
  93.     move.l    d0,$110(sp)
  94.     move.l    (sp)+,a6
  95. end;
  96.  
  97. procedure UnLoadModule; xassembler;
  98. asm
  99.     move.l    a6,-(sp)
  100.     move.l    8(sp),a0
  101.     move.l    MedPlayerBase,a6
  102.     jsr        -$4e(a6)
  103.     move.l    (sp)+,a6
  104. end;
  105.  
  106. function GetCurrentModule; xassembler;
  107. asm
  108.     move.l    a6,-(sp)
  109.     move.l    MedPlayerBase,a6
  110.     jsr        -$54(a6)
  111.     move.l    d0,$C(sp)
  112.     move.l    (sp)+,a6
  113. end;
  114.  
  115. procedure ResetMIDI; xassembler;
  116. asm
  117.     move.l    a6,-(sp)
  118.     move.l    MedPlayerBase,a6
  119.     jsr        -$5a(a6)
  120.     move.l    (sp)+,a6
  121. end;
  122.  
  123. procedure SetModnum; xassembler;
  124. asm
  125.     move.l    a6,-(sp)
  126.     move.l    8(sp),d0
  127.     move.l    MedPlayerBase,a6
  128.     jsr        -$60(a6)
  129.     move.l    (sp)+,a6
  130. end;
  131.  
  132. procedure RelocModule; xassembler;
  133. asm
  134.     move.l    a6,-(sp)
  135.     move.l    8(sp),a0
  136.     move.l    MedPlayerBase,a6
  137.     jsr        -$66(a6)
  138.     move.l    (sp)+,a6
  139. end;
  140.  
  141. end.